Estadísticos en gráficos

Elizabeth Valles

Enero, 2022

Antes de gráficar…

Datos tidy

Datos a gráficar

library(tidyverse)
#library(readr)
datos <- read_csv("/home/eli/Desktop/Neurobiologia/Platicas/IGeografia/data/datos_curados.dplyr.csv")
glimpse(datos)
## Rows: 928
## Columns: 3
## $ Estado  <chr> "Aguascalientes", "Baja California", "Baja California Sur", "C…
## $ año     <dbl> 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 19…
## $ cuartos <dbl> 636855, 3247343, 1793106, 557151, 1385880, 3845781, 12012296, …

¿Qué tipo de variables tenemos?

glimpse(datos)
## Rows: 928
## Columns: 3
## $ Estado  <chr> "Aguascalientes", "Baja California", "Baja California Sur", "C…
## $ año     <dbl> 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 19…
## $ cuartos <dbl> 636855, 3247343, 1793106, 557151, 1385880, 3845781, 12012296, …

¿Qué queremos visualizar?

una, dos variables, más…

Seleccionar gráfico en GGplot

Ahora si, vamos a gráficar con ggplot

ggplot(data = datos, mapping = aes(Estado, cuartos)) 

Agregar gráfico

ggplot(data = datos, mapping = aes(Estado, cuartos))  +
  geom_boxplot()

Modificar tamaño de letra

ggplot(data = datos, mapping = aes(Estado, cuartos))  +
  geom_boxplot() +
  theme(axis.text.x = element_text(size = 5)) 

Agregar color

ggplot(data = datos, mapping = aes(Estado, cuartos, fill = Estado))  +
  geom_boxplot() +
  theme(axis.text.x = element_text(size = 5))

Modificar color

ggplot(data = datos, mapping = aes(Estado, cuartos, fill = Estado))  +
  geom_boxplot() +
  theme(axis.text.x = element_text(size = 5)) +
  scale_fill_hue(l=40, c=60)

Modificar color 2

ggplot(data = datos, mapping = aes(Estado, cuartos, fill = Estado))  +
  geom_boxplot() +
  theme(axis.text.x = element_text(size = 5)) +
  scale_fill_grey(start = 0.1, end = 0.9)

Agregar texto

ggplot(data = datos, mapping = aes(Estado, cuartos, fill = Estado))  +
  geom_boxplot() +
  theme(axis.text.x = element_text(size = 5)) +
  scale_fill_hue(l=40, c=60) +
  ggtitle("Número de cuartos ocupados por estado") 

Orientación

ggplot(data = datos, mapping = aes(Estado, cuartos, fill = Estado))  +
  geom_boxplot() +
  theme(axis.text.x = element_text(size = 5)) +
  scale_fill_hue(l=40, c=60) +
  ggtitle("Número de cuartos ocupados por Estado") +
  coord_flip()

Remover guías

ggplot(data = datos, mapping = aes(Estado, cuartos, fill = Estado))  +
  geom_boxplot() +
  theme(axis.text.x = element_text(size = 5)) +
  scale_fill_hue(l=40, c=60) +
  ggtitle("Número de cuartos ocupados por Estado") +
  coord_flip() +
  guides(fill = F)

Modificar el tamaño del texto de los ejes

ggplot(data = datos, mapping = aes(Estado, cuartos, fill = Estado))  +
  geom_boxplot() +
  theme(axis.text.x = element_text(size = 10), 
        axis.text.y = element_text(size = 8)) +
  scale_fill_hue(l=40, c=60) +
  ggtitle("Número de cuartos ocupados por Estado") +
  coord_flip() +
  guides(fill = F)

Pero, el número de cuartos no se aprecia por ser números extensos…

Modificar las escalas de visualización

library(scales)
ggplot(data = datos, mapping = aes(Estado, cuartos, fill = Estado))  +
  geom_boxplot() +
  theme(axis.text.x = element_text(size = 10), 
        axis.text.y = element_text(size = 8)) +
  scale_fill_hue(l=40, c=60) +
  ggtitle("Número de cuartos ocupados por Estado") +
  coord_flip() +
  guides(fill = F) +
  scale_y_continuous(labels = unit_format(unit = "M", scale = 1e-6))

Incrementar el número de breaks del eje de las x

ggplot(data = datos, mapping = aes(Estado, cuartos, fill = Estado))  +
  geom_boxplot() +
  theme(axis.text.x = element_text(size = 10), 
        axis.text.y = element_text(size = 8)) +
  scale_fill_hue(l=40, c=60) +
  ggtitle("Número de cuartos ocupados por Estado") +
  coord_flip() +
  guides(fill = F) +
  scale_y_continuous(labels = unit_format(unit = "M", scale = 1e-6), n.breaks = 10)

Agregar estadísticos descriptivos con ggpubr

library(ggpubr)
ggplot(data = datos, mapping = aes(Estado, cuartos, fill = Estado))  +
  geom_boxplot() +
  theme(axis.text.x = element_text(size = 10), 
        axis.text.y = element_text(size = 8)) +
  scale_fill_hue(l=40, c=60) +
  ggtitle("Número de cuartos ocupados por Estado") +
  coord_flip() +
  guides(fill = F) +
  scale_y_continuous(labels = unit_format(unit = "M", scale = 1e-6), n.breaks = 20) +
  stat_summary(fun.y = mean, geom = "point")

Agregar estadísticos inferencial paramétrica con ggpubr

ggplot(data = datos, mapping = aes(Estado, cuartos, fill = Estado))  +
  geom_boxplot() +
  theme(axis.text.x = element_text(size = 4), 
        axis.text.y = element_text(size = 8)) +
  scale_fill_hue(l=40, c=60) +
  ggtitle("Número de cuartos ocupados por Estado") +
  guides(fill = F) +
  scale_y_continuous(labels = unit_format(unit = "M", scale = 1e-6), n.breaks = 20) +
  stat_summary(fun.y = mean, geom = "point") +
  stat_compare_means(method = "anova",
                     label.x = "Morelos", label.y = 40000000) +
  stat_compare_means(method = "t.test", label = "p.signif", ref.group = ".all.", 
                     comparisons = list(c("Quintana Roo", "Nayarit")))

Violin plot

datos %>% 
  filter(Estado %in% c("Colima","Oaxaca","Tamaulipas", "Veracruz")) %>% 
  ggplot(mapping = aes(Estado, cuartos, fill = Estado))  +
  geom_violin() +
  theme(axis.text = element_text(size = 8)) +
  scale_fill_hue(l=40, c=60) +
  ggtitle("Número de cuartos ocupados por Estado") +
  guides(fill = F) +
  scale_y_continuous(labels = unit_format(unit = "M", scale = 1e-6), n.breaks = 20) +
  stat_summary(fun.y = mean, geom = "point") +
  stat_compare_means(method = "anova",
                     label.x = "Colima", label.y = 6000000) +
  stat_compare_means(method = "t.test", label = "p.signif", ref.group = ".all.", 
                     comparisons = list(c("Colima", "Oaxaca"), c("Colima","Tamaulipas"),
                                        c("Colima", "Veracruz"), c("Oaxaca","Tamaulipas"),
                                        c("Oaxaca", "Veracruz"), c("Tamaulipas","Veracruz")))

Scatter plot

ggplot(data = datos, mapping = aes(Estado, cuartos, color = año))  +
  geom_point() +
  theme(axis.text = element_text(size = 8)) +
  scale_fill_hue(l=40, c=60) +
  ggtitle("Número de cuartos ocupados por Estado") +
  coord_flip() +
  guides(fill = F) +
  scale_y_continuous(labels = unit_format(unit = "M", scale = 1e-6), n.breaks = 20) 

Scatter plot - año as factor

ggplot(data = datos, mapping = aes(Estado, cuartos, color = factor(año)))  +
  geom_point() +
  theme(axis.text = element_text(size = 8)) +
  scale_fill_hue(l=40, c=60) +
  ggtitle("Número de cuartos ocupados por Estado") +
  coord_flip() +
  guides(fill = F) +
  scale_y_continuous(labels = unit_format(unit = "M", scale = 1e-6), n.breaks = 20) 

Strip chart

ggplot(data = datos, mapping = aes(Estado, cuartos, color = factor(año)))  +
  geom_jitter(size = 0.2) +
  theme(axis.text = element_text(size = 4)) +
  scale_fill_hue(l=40, c=60) +
  ggtitle("Número de cuartos ocupados por Estado") +
  coord_flip() +
  guides(fill = F) +
  scale_y_continuous(labels = unit_format(unit = "M", scale = 1e-6), n.breaks = 20) 

Bar plot

ggplot(data = datos, mapping = aes(Estado, cuartos, fill = factor(año))) +
  geom_bar(stat = "identity") +
  theme(axis.text = element_text(size = 8)) +
  scale_fill_hue(l=40, c=60) +
  ggtitle("Número de cuartos ocupados por Estado") +
  coord_flip() +
  scale_y_continuous(labels = unit_format(unit = "M", scale = 1e-6), n.breaks = 20) 

Subplots

datos %>% 
  filter(año %in% c(2015,2016,2017,2018,2019,2020)) %>% 
  ggplot(mapping = aes(Estado, cuartos, color = factor(Estado)))  +
  geom_jitter(size = 0.3) +
  theme(axis.text.x = element_text(size = 6), 
        axis.text.y = element_text(size = 2)) +
  scale_fill_hue(l=40, c=60) +
  ggtitle("Número de cuartos ocupados por Estado") +
  coord_flip() +
  guides(fill = F) +
  scale_y_continuous(labels = unit_format(unit = "M", scale = 1e-6), n.breaks = 10) +
  facet_wrap(~año) +
  guides(color = F)

Gráficos con ggstatsplot

library(ggstatsplot)
datos %>% 
  filter(Estado %in% c("Colima","Oaxaca","Tamaulipas", "Veracruz")) %>% 
  ggbetweenstats(x = Estado, y = cuartos,  
                 method = "np", 
                 p.adjust.method = "bonferroni", 
                 title = "Cuartos por estado",
                 xlab = "Estado", 
                 ylab = "No. de cuartos")

Exportar un gráfico ggplot-ggstatsplot

datos %>% 
  filter(Estado %in% c("Colima","Oaxaca","Tamaulipas", "Veracruz")) %>% 
  ggbetweenstats(x = Estado, y = cuartos,  
                 method = "np", 
                 p.adjust.method = "bonferroni", 
                 title = "Cuartos por estado",
                 xlab = "Estado", 
                 ylab = "No. de cuartos",
                 ggplot.component = list(ggplot2::scale_y_continuous(labels = unit_format(unit = "M", scale = 1e-6), n.breaks = 10)))

ggsave("cuartos.violin.jpg", width = 10, height = 6)

Corrplot

Pieplot

Actividad: aplicando las funciones de ggplot